home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre4.z / postgre4 / src / utils / adt / oidint4.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  1.8 KB  |  119 lines

  1. /*
  2.  *  oidint4.c --
  3.  *     Functions for the built-in type "oidint4".
  4.  */
  5.  
  6. #include "tmp/c.h"
  7. #include "tmp/postgres.h"
  8.  
  9. RcsId("$Header: /private/postgres/src/utils/adt/RCS/oidint4.c,v 1.3 1992/08/25 17:51:11 mer Exp $");
  10.  
  11. #include "utils/palloc.h"
  12.  
  13.  
  14. OidInt4
  15. oidint4in(o)
  16.     char *o;
  17. {
  18.     OidInt4 oi;
  19.     char *p;
  20.  
  21.     oi = (OidInt4) palloc(sizeof(OidInt4Data));
  22.  
  23.     for (p = o; *p != '\0' && *p != '/'; p++)
  24.         continue;
  25.     
  26.     oi->oi_oid = atoi(o);
  27.     if (*p == '\0') {
  28.         oi->oi_int4 = 0;
  29.     } else {
  30.         oi->oi_int4 = atoi(++p);
  31.     }
  32.  
  33.     return (oi);
  34. }
  35.  
  36. char *
  37. oidint4out(o)
  38.     OidInt4 o;
  39. {
  40.     char *r;
  41.  
  42.     r = (char *) palloc(20);
  43.     sprintf(r, "%d/%ld", o->oi_oid, o->oi_int4);
  44.  
  45.     return (r);
  46. }
  47.  
  48. bool
  49. oidint4lt(o1, o2)
  50.     OidInt4 o1, o2;
  51. {
  52.     return
  53.         ((bool) (o1->oi_oid < o2->oi_oid ||
  54.                 (o1->oi_oid == o2->oi_oid && o1->oi_int4 < o2->oi_int4)));
  55. }
  56.  
  57. bool
  58. oidint4le(o1, o2)
  59.     OidInt4 o1, o2;
  60. {
  61.     return ((bool) (o1->oi_oid < o2->oi_oid ||
  62.                (o1->oi_oid == o2->oi_oid && o1->oi_int4 <= o2->oi_int4)));
  63. }
  64.  
  65. bool
  66. oidint4eq(o1, o2)
  67.     OidInt4 o1, o2;
  68. {
  69.     return ((bool) (o1->oi_oid == o2->oi_oid && o1->oi_int4 == o2->oi_int4));
  70. }
  71.  
  72. bool
  73. oidint4ge(o1, o2)
  74.     OidInt4 o1, o2;
  75. {
  76.     return ((bool) (o1->oi_oid > o2->oi_oid ||
  77.                (o1->oi_oid == o2->oi_oid && o1->oi_int4 >= o2->oi_int4)));
  78. }
  79.  
  80. bool
  81. oidint4gt(o1, o2)
  82.     OidInt4 o1, o2;
  83. {
  84.     return ((bool) (o1->oi_oid > o2->oi_oid ||
  85.                (o1->oi_oid == o2->oi_oid && o1->oi_int4 > o2->oi_int4)));
  86. }
  87.  
  88. bool
  89. oidint4ne(o1, o2)
  90.     OidInt4 o1, o2;
  91. {
  92.     return ((bool) (o1->oi_oid != o2->oi_oid || o1->oi_int4 != o2->oi_int4));
  93. }
  94.  
  95. bool
  96. oidint4cmp(o1, o2)
  97.     OidInt4 o1, o2;
  98. {
  99.     if (oidint4lt(o1, o2))
  100.         return (-1);
  101.     else if (oidint4eq(o1, o2))
  102.         return (0);
  103.     else
  104.         return (1);
  105. }
  106.  
  107. OidInt4
  108. mkoidint4(v_oid, v_int4)
  109.     ObjectId v_oid;
  110.     uint32 v_int4;
  111. {
  112.     OidInt4 o;
  113.  
  114.     o = (OidInt4) palloc(sizeof(OidInt4Data));
  115.     o->oi_oid = v_oid;
  116.     o->oi_int4 = v_int4;
  117.     return (o);
  118. }
  119.